EC2 인스턴스에서 S3 Bucket의 파일을 다운로드 및 업로드
안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 EC2 인스턴스에서 S3 Bucket의 파일을 다운로드 및 업로드해 보는 과정을 정리해 봤습니다.
S3 Bucket과 RDS를 연동하는 방법은 아래 블로그를 참고해 주세요.
S3 Bucket 준비
먼저 S3 Bucket에서는 EC2 인스턴스에서 다운로드할 파일인「test-image.jpeg」와 EC2 인스턴스에서 S3 Bucket으로 업로드할 파일을 모아둘 test 라는 폴더를 준비합니다.
※ S3 Bucket 자체의 설정은 EC2 인스턴스와 동일한 리전을 설정했으며, 다른 설정은 디폴트로 값으로 S3 Bucket을 생성했습니다.
IAM 권한 설정
An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied
IAM 설정 없이 EC2 인스턴스에서 S3 Bucket으로 접근을 시도하면 다음과 같은 에러가 발생하므로, EC2 인스턴스에 S3 Bucket에 접근할 권한을 할당해야합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::S3 Bucket 이름", "arn:aws:s3:::S3 Bucket 이름/*" ] }, { "Action": [ "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::*", "Effect": "Allow" } ] }
먼저 상기와 같은 정책을 생성합니다.
이어서 IAM Role을 생성합니다.
- 서비스에는 EC2를 선택합니다.
- 사용 사례도 EC2를 선택합니다.
- 「다음」을 클릭합니다.
- 생성한 정책을 검색하여, 선택합니다.
- 「다음」을 클릭하여, IAM Role 생성을 끝마칩니다.
이어서 EC2 인스턴스를 생성할 때, 혹은 EC2 인스턴스에 생성한 IAM Role을 연결하면 됩니다.
S3 Bucket 파일 다운로드 및 업로드
[root@ip-10-0-129-119 ~]# aws s3 ls 2023-12-10 10:32:42 test-s3-ec2-jw
aws s3 ls 명령어를 입력하면, S3 Bucket 리스트가 출력됩니다.
[root@ip-10-0-129-119 ~]# aws s3 cp s3://test-s3-ec2-jw/test-image.jpeg ./test-image.jpeg download: s3://test-s3-ec2-jw/test-image.jpeg to ./test-image.jpeg [root@ip-10-0-129-119 ~]# ls test-image.jpeg
이어서 s3 cp 명령어를 사용해, test-image.jpeg 파일을 다운로드 할 수 있습니다.
[root@ip-10-0-129-119 ~]# aws s3 cp test-image.jpeg s3://test-s3-ec2-jw/test/ upload: ./test-image.jpeg to s3://test-s3-ec2-jw/test/test-image.jpeg
동일하게 s3 cp 명렁어를 통해, 다운로드한 파일을 S3 Bucket의 test 폴더로 업로드합니다.
S3 Bucket의 test 폴더로 들어가 보면, 파일이 업로드된 것을 확인할 수 있습니다.
업로드한 파일을 다운로드해 보면, 문제 없이 이미지 파일이 열리는 것을 확인할 수 있습니다.
그 외, s3 cp와 같은 CLI 수준의 명령어는 아래 공식 문서를 참고해 주세요.
본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 [email protected]로 보내주시면 감사하겠습니다.